Serverless Agents を利用して ECS on Fargate 環境で Sysdig Secure のマイニング検知をしてみた
こんにちは、AWS事業本部の平木です!
今回は、Sysdig Secure から提供されている Serverless Agents を利用して ECS on Fargate 環境でマイニング検知をしてみました。
Sysdig Secure や Serverless Agents については、下記ブログを参照ください。
前提条件
- AWS アカウントを持っていること
- Terraform の実行環境があること
- Sysdig Secure のアカウントを持っていること
Sysdig Secure の導入については下記ブログも参照ください。
デプロイされるリソース
下記リソースをデプロイします。
- VPC
- Subnet(Public/Private)
- Route Table
- Internet Gateway
- Nat Gateway
- EC2(疑似アタック用サーバ)
- EC2 Instance Connect Endpoint
- Network Load Balancer
- ECS Cluster
- Sysidig Orchastrator Agent
- Security Playground(擬似アタック被害コンテナ) + Sysdig Workload Agent
構成図
構成図としては下記のようになります。[1]
通信要件
下記のような通信経路になります。[2]
EC2 Instance Connect でプライベート接続
↓
EC2 サーバから curl コマンドで疑似アタックを実施(TCP:8080)
↓
Workload Agent でランタイム検知
↓
Workload Agent から Orchestrator Agent へ転送(TCP:6667)
↓
Orchestrator Agent 経由で Sysdig Secure へ転送(TCP:6443)
やってみる
環境構築
デプロイ用の Terraform のコードを GitHub のリポジトリに配置しています。
下記コマンドでリポジトリのクローンからデプロイまで実施します。
クローン
git clone https://github.com/Keisuke-Hiraki/ECS-Fargate-Sysdig-Secure-Mining-Detection.git
初期化
terraform init
作成
terraform apply \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com'
各パラメータについては下記をご確認ください。
- access_key Agent Access Keys | Sysdig Docs
- secure_api_token Retrieve the Sysdig API Token | Sysdig Docs
- collector_urlとsysdig_secure_url SaaS Regions and IP Ranges | Sysdig Docs
Ex.) US West (Oregon) の場合
collector_url
は ingest-us2.app.sysdig.com
sysdig_secure_url
は https://us2.app.sysdig.com
デプロイが完了し、Sysdig Secure の画面で「Integrations > Sysdig Agents」の順で選択すると、
Status が Up to Date
のノードが検出されていることが確認できます。
表示されればデプロイ完了です。
マイニング検知してみる
今回は、Sysdig Runtime Threat Intelligence
という ランタイムポリシーの中の、
Detect outbound connections to common miner pool ports
というルールを使用し、検知してみます。
こちらのルールは、一般的に使用されているマイニングプールポートアドレスと、宛先の DNS および IP アドレスを監視し検知するものになります。
まずは対象 IP アドレスは下記順を追ってみることができます。
Policies > Rules > Rules Library の順に進みます。
左上の検索窓に Detect outbound connections to common miner pool ports
と検索し、
対象の Rule を押下、さらに右側の net_miner_pool
を押下します。
続いて minerpool_other
を押下します。
最後、 miners_ip
を押下すると IP のリストが表示されます。
ここで表示された IP アドレスを後で使用するため控えておいてください。
前提
「Policies > Runtime Policies」から
- Sysdig Runtime Threat Intelligence
- Sysdig Runtime Notable Events
が 有効化されていることを確認します。
踏み台サーバから疑似アタックする
EC2 Instance Connect エンドポイントを使用しアクセスできるようになっているため、
起動している EC2 インスタンスへ接続します。
まず下記コマンドで Sysdig Secure でマイニング以外の攻撃の検知ができるか確認します。
ここの<攻撃対象のPrivate IP アドレス>
は、workload 用 ECS サービスのプライベート IP アドレスをご確認ください。
curl <攻撃対象のPrivate IP アドレス>:8080/etc/shadow
検証した環境では、10.0.1.108
だったため、
curl 10.0.1.108:8080/etc/shadow
と実行したところ、
機密ファイル(ユーザー/パスワード/認証情報を含むファイルなど)を読み取ろうとした場合に検知される、
Read sensitive file untrusted
が表示されました。
では続いて本題である、マイニング検知を実施してみます。
下記コマンドを実行します。
curl -X POST <攻撃対象のPrivate IP アドレス>:8080/exec -d 'command=curl <マイナープールの IP アドレス>'
実行してみたところ
上記のようにリアルタイムで検知できていることが分かりました。
片づけ
下記コマンドで環境を削除できます。
terraform destroy \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com'
参考
- Serverless Agentsを利用してECS Fargate環境でSysdig Secureを利用してみた〜Terraform編〜 | DevelopersIO
- Sysdig Secureを導入してコンテナイメージのスキャンをしてみた | DevelopersIO
- ECS on Fargate構成でのSysdigコンポーネントについて初心者向けに解説 | DevelopersIO
- SaaS Regions and IP Ranges | Sysdig Docs
- Sysdig Serverless Agentで保護しているAWS Fargateに対する脅威検知テスト - Qiita
おわりに
以上が Sysdig Secure でマイニング検知してみた、でした!
ぜひ Sysdig Secure を活用しセキュアに ECS on Fargate を使ってみてください。
万が一 AWS から不正なアクティビティを検知した場合にはこちらもご確認ください。
AWS アカウントでの不正なアクティビティに関する問題を解決する | AWS re:Post
この記事がどなたかの役に立てば嬉しいです。